﻿using GN.Pay.Client.Request.Trade;
using GN.Pay.Client.Response.Trade;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GN.Pay.Client.Services
{
    /// <summary>
    ///客户端交易申请服务接口
    /// </summary>
    public interface ITradeApplyService : IPayService
    {
        /// <summary>
        /// 支付申请注册
        /// </summary>
        /// <param name="request">请求</param>
        /// <returns></returns>
        PayApplyResponse PayApplyRegister(PayApplyRequest request);

        /// <summary>
        /// 支付通道注册
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        PayChannelResponse PayChannelRegister(PayChannelRequest request);

        /// <summary>
        /// 支付申请与通道注册
        /// </summary>
        /// <param name="request">请求</param>
        /// <returns></returns>
        PayChannelResponse PayApplyAndChannelRegister(PayApplyAndChannelRequest request);

        /// <summary>
        /// 短信付款
        /// </summary>
        /// <param name="request">请求</param>
        /// <returns></returns>
        PayChannelResponse SmsPay(SmsPayRequest request);

        /// <summary>
        /// 退款申请
        /// </summary>
        /// <param name="request">请求</param>
        /// <returns></returns>
        RefundApplyResponse RefundApply(RefundApplyRequest request);

        /// <summary>
        /// 转账申请
        /// </summary>
        /// <param name="request">请求</param>
        /// <returns></returns>
        TransfersApplyResponse TransfersApply(TransfersApplyRequest request);

       
    }
}
